from flask import Flask, render_template, request, jsonify
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
from flask_cors import CORS

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')  
# 确保 index.html 文件位于 templates 文件夹中

# 以下为配置信息
# 星火认知大模型的URL
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v1.1/chat'
# 在控制台获取的API密钥
SPARKAI_APP_ID = '6e4244ba'
SPARKAI_API_SECRET = 'NGJmNjAyNDcxYzdmNGJhMzI2NTFhMWI4'
SPARKAI_API_KEY = 'a70a751b89b2a2174fed3fd1328cdaa3'
# 使用的模型版本
SPARKAI_DOMAIN = 'general'

# 初始化大模型
spark = ChatSparkLLM(
    spark_api_url=SPARKAI_URL,
    spark_app_id=SPARKAI_APP_ID,
    spark_api_key=SPARKAI_API_KEY,
    spark_api_secret=SPARKAI_API_SECRET,
    spark_llm_domain=SPARKAI_DOMAIN,
    streaming=False,
)

@app.route('/chat', methods=['POST'])
def chat():
    user_message = request.json['message']
    messages = [ChatMessage(role="user", content=user_message)]
    
    try:
        response = spark.generate([messages])
        print("Response Object:", response)  # 打印对象以便调试

        # 提取文本，假设 response.generations 是一个列表
        # 访问父层属性，而不使用索引
        response_text = response.generations[0][0].text  # 使用属性访问方式

        return jsonify({'response': response_text})
    except Exception as e:
        print("Error:", str(e))  # 打印详细的错误信息
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True)
